A computing system not only consists of physical resources (processors, memory, peripherals, buses, etc.) but also performance resources such as processor cycles, clock speed, memory and I/O bandwidth and main/cache memory space. In traditional approaches, the performance resources have generally been managed inefficiently or not managed at all. As a result, processors are underutilized, consume too much energy and are robbed of some of their performance potential.
Many computer systems are capable of dynamically controlling the system and/or processor clock frequency(s). Lowering the clock frequency can dramatically lower the power consumption due to semiconductor scaling effects that allow processor supply voltages to be lowered when the clock frequency is lowered. Thus, being able to reduce the clock frequency, provided the computer system performs as required, can lead to reduced energy consumption, heat generation, etc. Similarly, many processors, as well as associated interfaces and/or peripherals, are able to rapidly enter and exit idle or sleep states where they may consume very small amounts of energy compared to their active state(s). As with lowering the clock frequency, placing one or more processors and/or part or all of a computer system in sleep state, can be used to reduce overall energy consumption provided the computer system performs as required.
In practice, conventional power management approaches detect idle times or “use modes” with slow system response when one or more processors can be idled or run at a lower clock speed and thus save energy. Power management based on “use modes” often has too coarse of a granularity to effectively take advantage of all energy reduction opportunities all the time.